Three address code

Three address code is een term uit de informatica waarmee een bepaald type van interne representaties voor compilers aangeduid wordt.

In het algemeen bestaat three address code uit een reeks van statements met de vorm:

x := y op z

waarbij op een willekeurige operator is en x, y en z argumenten zijn die naar geheugenadressen, registers, constanten of labels verwijzen. Hoewel three address code ook statements met één of helemaal geen argumenten kan bevatten, of statements zonder resultaatstoewijzing (doel), zijn er nooit meer dan twee argumenten en één doel. Vandaar de naam three address code.

Three address code kan beschouwd worden als een assembly voor een virtuele machine met een oneindig aantal registers. Three address code lijkt vaak op assembly voor bestaande processoren en is daardoor voor een groot deel eenvoudig in machinetaal te vertalen.

Het statement x := x + y * z kan in three address code als volgt weergegeven worden:

t1 := x * z
x := x + t1

waarbij t1 een door de compiler gegenereerde tijdelijke variabele (een register) is.

Behalve rekenkundige bewerkingen en toewijzingen zijn er in het algemeen nog een aantal soorten statements in three address codes, waaronder voorwaardelijke en onvoorwaardelijke spronginstructies, procedure-aanroepen en ondersteuning voor arrays.


© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search